import cv2
import os


def convert_images_to_bgr(input_folder, output_folder):
    # 创建输出文件夹（如果不存在）
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 遍历输入文件夹中的所有文件
    for filename in os.listdir(input_folder):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
            file_path = os.path.join(input_folder, filename)

            # 读取图片
            image = cv2.imread(file_path, cv2.IMREAD_UNCHANGED)

            # 检查图片是否成功读取
            if image is None:
                print(f"Error: 图片读取失败 {filename}")
                continue

            # 检查图片尺寸是否为1920x1080
            if image.shape[0] != 810 or image.shape[1] != 1344:
                print(f"Error: 图片尺寸不为1920x1080 {filename}")
                continue

            # 转换为BGR格式（确保RGB24格式）
            if image.shape[2] == 4:  # 如果图片是RGBA格式，转换为BGR
                bgr_image = cv2.cvtColor(image, cv2.COLOR_RGBA2BGR)
            else:  # 否则直接使用BGR格式
                bgr_image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)

            # 确保图像是24位的
            if bgr_image.shape[2] != 3:
                print(f"Error: 图片不是24位RGB格式 {filename}")
                continue

            # 构建输出文件路径
            output_file_path = os.path.join(output_folder, os.path.splitext(filename)[0] + '.bgr')

            # 将BGR图像数据保存为二进制文件
            with open(output_file_path, 'wb') as f:
                f.write(bgr_image.tobytes())

            print(f"图片成功转换并保存为BGR格式: {filename}")


# 输入文件夹路径
input_folder = '/Users/dingtong/Desktop/projectpython/opencvtest/yanzheng'
# 输出文件夹路径
output_folder = '/Users/dingtong/Desktop/projectpython/opencvtest/yanzhengjieguo'

# 调用函数转换图片
convert_images_to_bgr(input_folder, output_folder)
